package com.huahai.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huahai.pojo.dto.barrage.BarrageAddDTO;
import com.huahai.pojo.dto.barrage.BarrageQueryDTO;
import com.huahai.pojo.entity.Barrage;
import com.huahai.pojo.entity.User;
import com.huahai.pojo.vo.barrage.BarrageVO;

import javax.servlet.http.HttpServletRequest;

/**
* @author huahai
* @description 针对表【barrage(弹幕)】的数据库操作Service
* @createDate 2025-08-17 16:41:18
*/
public interface BarrageService extends IService<Barrage> {

    /**
     * 给弹幕板添加弹幕
     * @param barrageAddDTO 弹幕添加参数
     * @param loginUser 登录用户
     * @return 添加的弹幕 id
     */
    Long addBarrage(BarrageAddDTO barrageAddDTO, User loginUser);

    /**
     * barrage 类型转换脱敏（单条弹幕）
     * @param barrage 弹幕对象
     * @param request 请求
     * @return BarrageVO
     */
    BarrageVO getBarrageVO(Barrage barrage, HttpServletRequest request);

    /**
     * 分页获取弹幕封装
     * @param barragePage 分页参数
     * @param request 请求
     * @return Page<SpaceVO> 分页后的脱敏弹幕列表
     */
    Page<BarrageVO> getBarrageVOPage(Page<Barrage> barragePage, HttpServletRequest request);

    /**
     * 封装弹幕查询条件 QueryWrapper
     * @param barrageQueryDTO 弹幕查询条件
     * @return QueryWrapper<Barrage>
     */
    QueryWrapper<Barrage> getQueryWrapper(BarrageQueryDTO barrageQueryDTO);

    /**
     * 弹幕基本校验
     * @param barrage 弹幕对象
     */
    void validBarrage(Barrage barrage);
}
